using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataReviewerTools._ResultManagement
{
    /// <summary>
    /// <para>Delete Reviewer Session</para>
    /// <para>Permanently deletes one or more sessions and all related records from a Reviewer workspace.</para>
    /// <para>从 Reviewer 工作空间中永久删除一个或多个会话和所有相关记录。</para>
    /// </summary>    
    [DisplayName("Delete Reviewer Session")]
    public class DeleteReviewerSession : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public DeleteReviewerSession()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_reviewer_workspace">
        /// <para>Reviewer Workspace</para>
        /// <para>The workspace from which the Reviewer session will be deleted.</para>
        /// <para>将从中删除 Reviewer 会话的工作空间。</para>
        /// </param>
        /// <param name="_session">
        /// <para>Session</para>
        /// <para>The Reviewer session identifier and name. The session must exist in the Reviewer workspace, for example, Session 1 : data_qc.</para>
        /// <para>检查器会话标识符和名称。会话必须存在于检查器工作空间中，例如会话 1：data_qc。</para>
        /// </param>
        public DeleteReviewerSession(object _reviewer_workspace, List<object> _session)
        {
            this._reviewer_workspace = _reviewer_workspace;
            this._session = _session;
        }
        public override string ToolboxName => "Data Reviewer Tools";

        public override string ToolName => "Delete Reviewer Session";

        public override string CallName => "Reviewer.DeleteReviewerSession";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_reviewer_workspace, _session, _result.GetGPValue()];

        /// <summary>
        /// <para>Reviewer Workspace</para>
        /// <para>The workspace from which the Reviewer session will be deleted.</para>
        /// <para>将从中删除 Reviewer 会话的工作空间。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Reviewer Workspace")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _reviewer_workspace { get; set; }


        /// <summary>
        /// <para>Session</para>
        /// <para>The Reviewer session identifier and name. The session must exist in the Reviewer workspace, for example, Session 1 : data_qc.</para>
        /// <para>检查器会话标识符和名称。会话必须存在于检查器工作空间中，例如会话 1：data_qc。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Session")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _session { get; set; }


        /// <summary>
        /// <para>Delete Reviewer Session Succeeded</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Delete Reviewer Session Succeeded")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public _result_value _result { get; set; }

        public enum _result_value
        {
            /// <summary>
            /// <para>ERROR</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ERROR")]
            [GPEnumValue("false")]
            _false,

            /// <summary>
            /// <para>SUCCESS</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("SUCCESS")]
            [GPEnumValue("true")]
            _true,

        }

        public DeleteReviewerSession SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}